package com.sojson.project.monitor.job.controller.param.verify;

import com.sojson.project.monitor.job.entity.po.Job;
import com.sojson.result.Result;
import com.sojson.util.StringUtil;
import com.sojson.util.job.CronUtil;

/**
 * 定时任务调度表控制器参数验证
 * 
 * @author liu
 * @date 2021-10-17
 */
public class SysJobParamVerify {

    /**
     * 单条插入
     * 
     * @param dto
     * @return
     */
    public static Result<Boolean> save(Job dto) {
        if (StringUtil.isBlank(dto.getName())) {
            return Result.fail("任务名称不能为空！");
        }
        if (StringUtil.isBlank(dto.getGroup())) {
            return Result.fail("任务组名不能为空！");
        }
        if (StringUtil.isBlank(dto.getInvokeTarget())) {
            return Result.fail("调用目标字符串不能为空！");
        }
        String cronExpression = dto.getCronExpression();
        if (StringUtil.isBlank(cronExpression)) {
            return Result.fail("cron执行表达式不能为空！");
        }
        if (!CronUtil.isValid(cronExpression)) {
            return Result.fail("cron表达式格式错误");
        }
        if (StringUtil.isBlank(dto.getMisfirePolicy())) {
            return Result.fail("cron计划策略不能为空！");
        }

        return Result.success();
    }

    /**
     * 通过id更新(局部更新)
     * 
     * @param dto
     * @return
     */
    public static Result<Boolean> updateById(Job dto) {
        if (StringUtil.isBlank(dto.getId())) {
            return Result.fail("ID不能为空！");
        }

        return save(dto);
    }

    /**
     * 通过id修改状态
     * 
     * @param dto
     * @return
     */
    public static Result<Boolean> updateStatusById(Job dto) {
        if (StringUtil.isBlank(dto.getId())) {
            return Result.fail("ID不能为空！");
        }
        if (StringUtil.isBlank(dto.getStatus())) {
            return Result.fail("状态不能为空！");
        }

        return Result.success();
    }

}